#ifndef TEST_GRAPHICS_TEST_BASIC_INIT_H
#	define TEST_GRAPHICS_TEST_BASIC_INIT_H

#include "test.h"

namespace dw {
	namespace system {

class Window;

	} // namespace system
	namespace graffiti {

class RenderWindow;

	} // graffiti
	namespace inputs {

class InputCommand;

	} // inputs
} // namespace dw

namespace test {
	namespace graffiti {

class BasicInit
:	public dw::test::Test
{
public : //! @name Types definitions
	//! @{
	typedef dw::test::Test base;
	//! @}

public : //! @name Construction & Destruction
	//! @{
	BasicInit()
	:	base("BasicInit")
	,	m_window(NULL)
	,	m_listener(NULL)
	,	m_renderWindow(NULL)
	,	m_stop(false)
	,	m_exit(NULL)
	{
		;
	}
	virtual ~BasicInit()
	{
		;
	}
	//! @}

public : //! @name Commands
	//! @{
	virtual bool setup();
	virtual bool run();
	virtual bool teardown();

	void stop() { m_stop = true; }
	//! @}

private : //! @name Types definitions
	//! @{
	class WindowListener;
	//! @}

private : //! @name Data
	//! @{
	dw::system::Window* m_window;
	WindowListener* m_listener;
	dw::graffiti::RenderWindow* m_renderWindow;
	bool m_stop;
	dw::inputs::InputCommand* m_exit;
	//! @}
};

	} // namespace graffiti
} // namespace test

#endif // !TEST_GRAPHICS_TEST_BASIC_INIT_H
